{"ast":null,"code":"// TinyColor v1.4.2\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function (Math) {\n  var trimLeft = /^\\s+/,\n    trimRight = /\\s+$/,\n    tinyCounter = 0,\n    mathRound = Math.round,\n    mathMin = Math.min,\n    mathMax = Math.max,\n    mathRandom = Math.random;\n  function tinycolor(color, opts) {\n    color = color ? color : '';\n    opts = opts || {};\n\n    // If input is already a tinycolor, return itself\n    if (color instanceof tinycolor) {\n      return color;\n    }\n    // If we are called as a function, call using new instead\n    if (!(this instanceof tinycolor)) {\n      return new tinycolor(color, opts);\n    }\n    var rgb = inputToRGB(color);\n    this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = mathRound(100 * this._a) / 100, this._format = opts.format || rgb.format;\n    this._gradientType = opts.gradientType;\n\n    // Don't let the range of [0,255] come back in [0,1].\n    // Potentially lose a little bit of precision here, but will fix issues where\n    // .5 gets interpreted as half of the total, instead of half of 1\n    // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n    if (this._r < 1) {\n      this._r = mathRound(this._r);\n    }\n    if (this._g < 1) {\n      this._g = mathRound(this._g);\n    }\n    if (this._b < 1) {\n      this._b = mathRound(this._b);\n    }\n    this._ok = rgb.ok;\n    this._tc_id = tinyCounter++;\n  }\n  tinycolor.prototype = {\n    isDark: function isDark() {\n      return this.getBrightness() < 128;\n    },\n    isLight: function isLight() {\n      return !this.isDark();\n    },\n    isValid: function isValid() {\n      return this._ok;\n    },\n    getOriginalInput: function getOriginalInput() {\n      return this._originalInput;\n    },\n    getFormat: function getFormat() {\n      return this._format;\n    },\n    getAlpha: function getAlpha() {\n      return this._a;\n    },\n    getBrightness: function getBrightness() {\n      //http://www.w3.org/TR/AERT#color-contrast\n      var rgb = this.toRgb();\n      return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n    },\n    getLuminance: function getLuminance() {\n      //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n      var rgb = this.toRgb();\n      var RsRGB, GsRGB, BsRGB, R, G, B;\n      RsRGB = rgb.r / 255;\n      GsRGB = rgb.g / 255;\n      BsRGB = rgb.b / 255;\n      if (RsRGB <= 0.03928) {\n        R = RsRGB / 12.92;\n      } else {\n        R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n      }\n      if (GsRGB <= 0.03928) {\n        G = GsRGB / 12.92;\n      } else {\n        G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n      }\n      if (BsRGB <= 0.03928) {\n        B = BsRGB / 12.92;\n      } else {\n        B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n      }\n      return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n    },\n    setAlpha: function setAlpha(value) {\n      this._a = boundAlpha(value);\n      this._roundA = mathRound(100 * this._a) / 100;\n      return this;\n    },\n    toHsv: function toHsv() {\n      var hsv = rgbToHsv(this._r, this._g, this._b);\n      return {\n        h: hsv.h * 360,\n        s: hsv.s,\n        v: hsv.v,\n        a: this._a\n      };\n    },\n    toHsvString: function toHsvString() {\n      var hsv = rgbToHsv(this._r, this._g, this._b);\n      var h = mathRound(hsv.h * 360),\n        s = mathRound(hsv.s * 100),\n        v = mathRound(hsv.v * 100);\n      return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n    },\n    toHsl: function toHsl() {\n      var hsl = rgbToHsl(this._r, this._g, this._b);\n      return {\n        h: hsl.h * 360,\n        s: hsl.s,\n        l: hsl.l,\n        a: this._a\n      };\n    },\n    toHslString: function toHslString() {\n      var hsl = rgbToHsl(this._r, this._g, this._b);\n      var h = mathRound(hsl.h * 360),\n        s = mathRound(hsl.s * 100),\n        l = mathRound(hsl.l * 100);\n      return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n    },\n    toHex: function toHex(allow3Char) {\n      return rgbToHex(this._r, this._g, this._b, allow3Char);\n    },\n    toHexString: function toHexString(allow3Char) {\n      return '#' + this.toHex(allow3Char);\n    },\n    toHex8: function toHex8(allow4Char) {\n      return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n    },\n    toHex8String: function toHex8String(allow4Char) {\n      return '#' + this.toHex8(allow4Char);\n    },\n    toRgb: function toRgb() {\n      return {\n        r: mathRound(this._r),\n        g: mathRound(this._g),\n        b: mathRound(this._b),\n        a: this._a\n      };\n    },\n    toRgbString: function toRgbString() {\n      return this._a == 1 ? \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" : \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n    },\n    toPercentageRgb: function toPercentageRgb() {\n      return {\n        r: mathRound(bound01(this._r, 255) * 100) + \"%\",\n        g: mathRound(bound01(this._g, 255) * 100) + \"%\",\n        b: mathRound(bound01(this._b, 255) * 100) + \"%\",\n        a: this._a\n      };\n    },\n    toPercentageRgbString: function toPercentageRgbString() {\n      return this._a == 1 ? \"rgb(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n    },\n    toName: function toName() {\n      if (this._a === 0) {\n        return \"transparent\";\n      }\n      if (this._a < 1) {\n        return false;\n      }\n      return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n    },\n    toFilter: function toFilter(secondColor) {\n      var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n      var secondHex8String = hex8String;\n      var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n      if (secondColor) {\n        var s = tinycolor(secondColor);\n        secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n      }\n      return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n    },\n    toString: function toString(format) {\n      var formatSet = !!format;\n      format = format || this._format;\n      var formattedString = false;\n      var hasAlpha = this._a < 1 && this._a >= 0;\n      var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n      if (needsAlphaFormat) {\n        // Special case for \"transparent\", all other non-alpha formats\n        // will return rgba when there is transparency.\n        if (format === \"name\" && this._a === 0) {\n          return this.toName();\n        }\n        return this.toRgbString();\n      }\n      if (format === \"rgb\") {\n        formattedString = this.toRgbString();\n      }\n      if (format === \"prgb\") {\n        formattedString = this.toPercentageRgbString();\n      }\n      if (format === \"hex\" || format === \"hex6\") {\n        formattedString = this.toHexString();\n      }\n      if (format === \"hex3\") {\n        formattedString = this.toHexString(true);\n      }\n      if (format === \"hex4\") {\n        formattedString = this.toHex8String(true);\n      }\n      if (format === \"hex8\") {\n        formattedString = this.toHex8String();\n      }\n      if (format === \"name\") {\n        formattedString = this.toName();\n      }\n      if (format === \"hsl\") {\n        formattedString = this.toHslString();\n      }\n      if (format === \"hsv\") {\n        formattedString = this.toHsvString();\n      }\n      return formattedString || this.toHexString();\n    },\n    clone: function clone() {\n      return tinycolor(this.toString());\n    },\n    _applyModification: function _applyModification(fn, args) {\n      var color = fn.apply(null, [this].concat([].slice.call(args)));\n      this._r = color._r;\n      this._g = color._g;\n      this._b = color._b;\n      this.setAlpha(color._a);\n      return this;\n    },\n    lighten: function lighten() {\n      return this._applyModification(_lighten, arguments);\n    },\n    brighten: function brighten() {\n      return this._applyModification(_brighten, arguments);\n    },\n    darken: function darken() {\n      return this._applyModification(_darken, arguments);\n    },\n    desaturate: function desaturate() {\n      return this._applyModification(_desaturate, arguments);\n    },\n    saturate: function saturate() {\n      return this._applyModification(_saturate, arguments);\n    },\n    greyscale: function greyscale() {\n      return this._applyModification(_greyscale, arguments);\n    },\n    spin: function spin() {\n      return this._applyModification(_spin, arguments);\n    },\n    _applyCombination: function _applyCombination(fn, args) {\n      return fn.apply(null, [this].concat([].slice.call(args)));\n    },\n    analogous: function analogous() {\n      return this._applyCombination(_analogous, arguments);\n    },\n    complement: function complement() {\n      return this._applyCombination(_complement, arguments);\n    },\n    monochromatic: function monochromatic() {\n      return this._applyCombination(_monochromatic, arguments);\n    },\n    splitcomplement: function splitcomplement() {\n      return this._applyCombination(_splitcomplement, arguments);\n    },\n    triad: function triad() {\n      return this._applyCombination(_triad, arguments);\n    },\n    tetrad: function tetrad() {\n      return this._applyCombination(_tetrad, arguments);\n    }\n  };\n\n  // If input is an object, force 1 into \"1.0\" to handle ratios properly\n  // String input requires \"1.0\" as input, so 1 will be treated as 1\n  tinycolor.fromRatio = function (color, opts) {\n    if (typeof color == \"object\") {\n      var newColor = {};\n      for (var i in color) {\n        if (color.hasOwnProperty(i)) {\n          if (i === \"a\") {\n            newColor[i] = color[i];\n          } else {\n            newColor[i] = convertToPercentage(color[i]);\n          }\n        }\n      }\n      color = newColor;\n    }\n    return tinycolor(color, opts);\n  };\n\n  // Given a string or object, convert that input to RGB\n  // Possible string inputs:\n  //\n  //     \"red\"\n  //     \"#f00\" or \"f00\"\n  //     \"#ff0000\" or \"ff0000\"\n  //     \"#ff000000\" or \"ff000000\"\n  //     \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n  //     \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n  //     \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n  //     \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n  //     \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n  //     \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n  //     \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n  //\n  function inputToRGB(color) {\n    var rgb = {\n      r: 0,\n      g: 0,\n      b: 0\n    };\n    var a = 1;\n    var s = null;\n    var v = null;\n    var l = null;\n    var ok = false;\n    var format = false;\n    if (typeof color == \"string\") {\n      color = stringInputToObject(color);\n    }\n    if (typeof color == \"object\") {\n      if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n        rgb = rgbToRgb(color.r, color.g, color.b);\n        ok = true;\n        format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n      } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n        s = convertToPercentage(color.s);\n        v = convertToPercentage(color.v);\n        rgb = hsvToRgb(color.h, s, v);\n        ok = true;\n        format = \"hsv\";\n      } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n        s = convertToPercentage(color.s);\n        l = convertToPercentage(color.l);\n        rgb = hslToRgb(color.h, s, l);\n        ok = true;\n        format = \"hsl\";\n      }\n      if (color.hasOwnProperty(\"a\")) {\n        a = color.a;\n      }\n    }\n    a = boundAlpha(a);\n    return {\n      ok: ok,\n      format: color.format || format,\n      r: mathMin(255, mathMax(rgb.r, 0)),\n      g: mathMin(255, mathMax(rgb.g, 0)),\n      b: mathMin(255, mathMax(rgb.b, 0)),\n      a: a\n    };\n  }\n\n  // Conversion Functions\n  // --------------------\n\n  // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n  // <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n  // `rgbToRgb`\n  // Handle bounds / percentage checking to conform to CSS color spec\n  // <http://www.w3.org/TR/css3-color/>\n  // *Assumes:* r, g, b in [0, 255] or [0, 1]\n  // *Returns:* { r, g, b } in [0, 255]\n  function rgbToRgb(r, g, b) {\n    return {\n      r: bound01(r, 255) * 255,\n      g: bound01(g, 255) * 255,\n      b: bound01(b, 255) * 255\n    };\n  }\n\n  // `rgbToHsl`\n  // Converts an RGB color value to HSL.\n  // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n  // *Returns:* { h, s, l } in [0,1]\n  function rgbToHsl(r, g, b) {\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n    var max = mathMax(r, g, b),\n      min = mathMin(r, g, b);\n    var h,\n      s,\n      l = (max + min) / 2;\n    if (max == min) {\n      h = s = 0; // achromatic\n    } else {\n      var d = max - min;\n      s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n      switch (max) {\n        case r:\n          h = (g - b) / d + (g < b ? 6 : 0);\n          break;\n        case g:\n          h = (b - r) / d + 2;\n          break;\n        case b:\n          h = (r - g) / d + 4;\n          break;\n      }\n      h /= 6;\n    }\n    return {\n      h: h,\n      s: s,\n      l: l\n    };\n  }\n\n  // `hslToRgb`\n  // Converts an HSL color value to RGB.\n  // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n  // *Returns:* { r, g, b } in the set [0, 255]\n  function hslToRgb(h, s, l) {\n    var r, g, b;\n    h = bound01(h, 360);\n    s = bound01(s, 100);\n    l = bound01(l, 100);\n    function hue2rgb(p, q, t) {\n      if (t < 0) t += 1;\n      if (t > 1) t -= 1;\n      if (t < 1 / 6) return p + (q - p) * 6 * t;\n      if (t < 1 / 2) return q;\n      if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n      return p;\n    }\n    if (s === 0) {\n      r = g = b = l; // achromatic\n    } else {\n      var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n      var p = 2 * l - q;\n      r = hue2rgb(p, q, h + 1 / 3);\n      g = hue2rgb(p, q, h);\n      b = hue2rgb(p, q, h - 1 / 3);\n    }\n    return {\n      r: r * 255,\n      g: g * 255,\n      b: b * 255\n    };\n  }\n\n  // `rgbToHsv`\n  // Converts an RGB color value to HSV\n  // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n  // *Returns:* { h, s, v } in [0,1]\n  function rgbToHsv(r, g, b) {\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n    var max = mathMax(r, g, b),\n      min = mathMin(r, g, b);\n    var h,\n      s,\n      v = max;\n    var d = max - min;\n    s = max === 0 ? 0 : d / max;\n    if (max == min) {\n      h = 0; // achromatic\n    } else {\n      switch (max) {\n        case r:\n          h = (g - b) / d + (g < b ? 6 : 0);\n          break;\n        case g:\n          h = (b - r) / d + 2;\n          break;\n        case b:\n          h = (r - g) / d + 4;\n          break;\n      }\n      h /= 6;\n    }\n    return {\n      h: h,\n      s: s,\n      v: v\n    };\n  }\n\n  // `hsvToRgb`\n  // Converts an HSV color value to RGB.\n  // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n  // *Returns:* { r, g, b } in the set [0, 255]\n  function hsvToRgb(h, s, v) {\n    h = bound01(h, 360) * 6;\n    s = bound01(s, 100);\n    v = bound01(v, 100);\n    var i = Math.floor(h),\n      f = h - i,\n      p = v * (1 - s),\n      q = v * (1 - f * s),\n      t = v * (1 - (1 - f) * s),\n      mod = i % 6,\n      r = [v, q, p, p, t, v][mod],\n      g = [t, v, v, q, p, p][mod],\n      b = [p, p, t, v, v, q][mod];\n    return {\n      r: r * 255,\n      g: g * 255,\n      b: b * 255\n    };\n  }\n\n  // `rgbToHex`\n  // Converts an RGB color to hex\n  // Assumes r, g, and b are contained in the set [0, 255]\n  // Returns a 3 or 6 character hex\n  function rgbToHex(r, g, b, allow3Char) {\n    var hex = [pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16))];\n\n    // Return a 3 character hex if possible\n    if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n      return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n    }\n    return hex.join(\"\");\n  }\n\n  // `rgbaToHex`\n  // Converts an RGBA color plus alpha transparency to hex\n  // Assumes r, g, b are contained in the set [0, 255] and\n  // a in [0, 1]. Returns a 4 or 8 character rgba hex\n  function rgbaToHex(r, g, b, a, allow4Char) {\n    var hex = [pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n    // Return a 4 character hex if possible\n    if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n      return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n    }\n    return hex.join(\"\");\n  }\n\n  // `rgbaToArgbHex`\n  // Converts an RGBA color to an ARGB Hex8 string\n  // Rarely used, but required for \"toFilter()\"\n  function rgbaToArgbHex(r, g, b, a) {\n    var hex = [pad2(convertDecimalToHex(a)), pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16))];\n    return hex.join(\"\");\n  }\n\n  // `equals`\n  // Can be called with any tinycolor input\n  tinycolor.equals = function (color1, color2) {\n    if (!color1 || !color2) {\n      return false;\n    }\n    return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n  };\n  tinycolor.random = function () {\n    return tinycolor.fromRatio({\n      r: mathRandom(),\n      g: mathRandom(),\n      b: mathRandom()\n    });\n  };\n\n  // Modification Functions\n  // ----------------------\n  // Thanks to less.js for some of the basics here\n  // <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\n  function _desaturate(color, amount) {\n    amount = amount === 0 ? 0 : amount || 10;\n    var hsl = tinycolor(color).toHsl();\n    hsl.s -= amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n  }\n  function _saturate(color, amount) {\n    amount = amount === 0 ? 0 : amount || 10;\n    var hsl = tinycolor(color).toHsl();\n    hsl.s += amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n  }\n  function _greyscale(color) {\n    return tinycolor(color).desaturate(100);\n  }\n  function _lighten(color, amount) {\n    amount = amount === 0 ? 0 : amount || 10;\n    var hsl = tinycolor(color).toHsl();\n    hsl.l += amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n  }\n  function _brighten(color, amount) {\n    amount = amount === 0 ? 0 : amount || 10;\n    var rgb = tinycolor(color).toRgb();\n    rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * -(amount / 100))));\n    rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * -(amount / 100))));\n    rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * -(amount / 100))));\n    return tinycolor(rgb);\n  }\n  function _darken(color, amount) {\n    amount = amount === 0 ? 0 : amount || 10;\n    var hsl = tinycolor(color).toHsl();\n    hsl.l -= amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n  }\n\n  // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n  // Values outside of this range will be wrapped into this range.\n  function _spin(color, amount) {\n    var hsl = tinycolor(color).toHsl();\n    var hue = (hsl.h + amount) % 360;\n    hsl.h = hue < 0 ? 360 + hue : hue;\n    return tinycolor(hsl);\n  }\n\n  // Combination Functions\n  // ---------------------\n  // Thanks to jQuery xColor for some of the ideas behind these\n  // <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\n  function _complement(color) {\n    var hsl = tinycolor(color).toHsl();\n    hsl.h = (hsl.h + 180) % 360;\n    return tinycolor(hsl);\n  }\n  function _triad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [tinycolor(color), tinycolor({\n      h: (h + 120) % 360,\n      s: hsl.s,\n      l: hsl.l\n    }), tinycolor({\n      h: (h + 240) % 360,\n      s: hsl.s,\n      l: hsl.l\n    })];\n  }\n  function _tetrad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [tinycolor(color), tinycolor({\n      h: (h + 90) % 360,\n      s: hsl.s,\n      l: hsl.l\n    }), tinycolor({\n      h: (h + 180) % 360,\n      s: hsl.s,\n      l: hsl.l\n    }), tinycolor({\n      h: (h + 270) % 360,\n      s: hsl.s,\n      l: hsl.l\n    })];\n  }\n  function _splitcomplement(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [tinycolor(color), tinycolor({\n      h: (h + 72) % 360,\n      s: hsl.s,\n      l: hsl.l\n    }), tinycolor({\n      h: (h + 216) % 360,\n      s: hsl.s,\n      l: hsl.l\n    })];\n  }\n  function _analogous(color, results, slices) {\n    results = results || 6;\n    slices = slices || 30;\n    var hsl = tinycolor(color).toHsl();\n    var part = 360 / slices;\n    var ret = [tinycolor(color)];\n    for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n      hsl.h = (hsl.h + part) % 360;\n      ret.push(tinycolor(hsl));\n    }\n    return ret;\n  }\n  function _monochromatic(color, results) {\n    results = results || 6;\n    var hsv = tinycolor(color).toHsv();\n    var h = hsv.h,\n      s = hsv.s,\n      v = hsv.v;\n    var ret = [];\n    var modification = 1 / results;\n    while (results--) {\n      ret.push(tinycolor({\n        h: h,\n        s: s,\n        v: v\n      }));\n      v = (v + modification) % 1;\n    }\n    return ret;\n  }\n\n  // Utility Functions\n  // ---------------------\n\n  tinycolor.mix = function (color1, color2, amount) {\n    amount = amount === 0 ? 0 : amount || 50;\n    var rgb1 = tinycolor(color1).toRgb();\n    var rgb2 = tinycolor(color2).toRgb();\n    var p = amount / 100;\n    var rgba = {\n      r: (rgb2.r - rgb1.r) * p + rgb1.r,\n      g: (rgb2.g - rgb1.g) * p + rgb1.g,\n      b: (rgb2.b - rgb1.b) * p + rgb1.b,\n      a: (rgb2.a - rgb1.a) * p + rgb1.a\n    };\n    return tinycolor(rgba);\n  };\n\n  // Readability Functions\n  // ---------------------\n  // <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n  // `contrast`\n  // Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\n  tinycolor.readability = function (color1, color2) {\n    var c1 = tinycolor(color1);\n    var c2 = tinycolor(color2);\n    return (Math.max(c1.getLuminance(), c2.getLuminance()) + 0.05) / (Math.min(c1.getLuminance(), c2.getLuminance()) + 0.05);\n  };\n\n  // `isReadable`\n  // Ensure that foreground and background color combinations meet WCAG2 guidelines.\n  // The third argument is an optional Object.\n  //      the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n  //      the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n  // If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n  // *Example*\n  //    tinycolor.isReadable(\"#000\", \"#111\") => false\n  //    tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\n  tinycolor.isReadable = function (color1, color2, wcag2) {\n    var readability = tinycolor.readability(color1, color2);\n    var wcag2Parms, out;\n    out = false;\n    wcag2Parms = validateWCAG2Parms(wcag2);\n    switch (wcag2Parms.level + wcag2Parms.size) {\n      case \"AAsmall\":\n      case \"AAAlarge\":\n        out = readability >= 4.5;\n        break;\n      case \"AAlarge\":\n        out = readability >= 3;\n        break;\n      case \"AAAsmall\":\n        out = readability >= 7;\n        break;\n    }\n    return out;\n  };\n\n  // `mostReadable`\n  // Given a base color and a list of possible foreground or background\n  // colors for that base, returns the most readable color.\n  // Optionally returns Black or White if the most readable color is unreadable.\n  // *Example*\n  //    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n  //    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString();  // \"#ffffff\"\n  //    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n  //    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\n  tinycolor.mostReadable = function (baseColor, colorList, args) {\n    var bestColor = null;\n    var bestScore = 0;\n    var readability;\n    var includeFallbackColors, level, size;\n    args = args || {};\n    includeFallbackColors = args.includeFallbackColors;\n    level = args.level;\n    size = args.size;\n    for (var i = 0; i < colorList.length; i++) {\n      readability = tinycolor.readability(baseColor, colorList[i]);\n      if (readability > bestScore) {\n        bestScore = readability;\n        bestColor = tinycolor(colorList[i]);\n      }\n    }\n    if (tinycolor.isReadable(baseColor, bestColor, {\n      \"level\": level,\n      \"size\": size\n    }) || !includeFallbackColors) {\n      return bestColor;\n    } else {\n      args.includeFallbackColors = false;\n      return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n    }\n  };\n\n  // Big List of Colors\n  // ------------------\n  // <http://www.w3.org/TR/css3-color/#svg-color>\n  var names = tinycolor.names = {\n    aliceblue: \"f0f8ff\",\n    antiquewhite: \"faebd7\",\n    aqua: \"0ff\",\n    aquamarine: \"7fffd4\",\n    azure: \"f0ffff\",\n    beige: \"f5f5dc\",\n    bisque: \"ffe4c4\",\n    black: \"000\",\n    blanchedalmond: \"ffebcd\",\n    blue: \"00f\",\n    blueviolet: \"8a2be2\",\n    brown: \"a52a2a\",\n    burlywood: \"deb887\",\n    burntsienna: \"ea7e5d\",\n    cadetblue: \"5f9ea0\",\n    chartreuse: \"7fff00\",\n    chocolate: \"d2691e\",\n    coral: \"ff7f50\",\n    cornflowerblue: \"6495ed\",\n    cornsilk: \"fff8dc\",\n    crimson: \"dc143c\",\n    cyan: \"0ff\",\n    darkblue: \"00008b\",\n    darkcyan: \"008b8b\",\n    darkgoldenrod: \"b8860b\",\n    darkgray: \"a9a9a9\",\n    darkgreen: \"006400\",\n    darkgrey: \"a9a9a9\",\n    darkkhaki: \"bdb76b\",\n    darkmagenta: \"8b008b\",\n    darkolivegreen: \"556b2f\",\n    darkorange: \"ff8c00\",\n    darkorchid: \"9932cc\",\n    darkred: \"8b0000\",\n    darksalmon: \"e9967a\",\n    darkseagreen: \"8fbc8f\",\n    darkslateblue: \"483d8b\",\n    darkslategray: \"2f4f4f\",\n    darkslategrey: \"2f4f4f\",\n    darkturquoise: \"00ced1\",\n    darkviolet: \"9400d3\",\n    deeppink: \"ff1493\",\n    deepskyblue: \"00bfff\",\n    dimgray: \"696969\",\n    dimgrey: \"696969\",\n    dodgerblue: \"1e90ff\",\n    firebrick: \"b22222\",\n    floralwhite: \"fffaf0\",\n    forestgreen: \"228b22\",\n    fuchsia: \"f0f\",\n    gainsboro: \"dcdcdc\",\n    ghostwhite: \"f8f8ff\",\n    gold: \"ffd700\",\n    goldenrod: \"daa520\",\n    gray: \"808080\",\n    green: \"008000\",\n    greenyellow: \"adff2f\",\n    grey: \"808080\",\n    honeydew: \"f0fff0\",\n    hotpink: \"ff69b4\",\n    indianred: \"cd5c5c\",\n    indigo: \"4b0082\",\n    ivory: \"fffff0\",\n    khaki: \"f0e68c\",\n    lavender: \"e6e6fa\",\n    lavenderblush: \"fff0f5\",\n    lawngreen: \"7cfc00\",\n    lemonchiffon: \"fffacd\",\n    lightblue: \"add8e6\",\n    lightcoral: \"f08080\",\n    lightcyan: \"e0ffff\",\n    lightgoldenrodyellow: \"fafad2\",\n    lightgray: \"d3d3d3\",\n    lightgreen: \"90ee90\",\n    lightgrey: \"d3d3d3\",\n    lightpink: \"ffb6c1\",\n    lightsalmon: \"ffa07a\",\n    lightseagreen: \"20b2aa\",\n    lightskyblue: \"87cefa\",\n    lightslategray: \"789\",\n    lightslategrey: \"789\",\n    lightsteelblue: \"b0c4de\",\n    lightyellow: \"ffffe0\",\n    lime: \"0f0\",\n    limegreen: \"32cd32\",\n    linen: \"faf0e6\",\n    magenta: \"f0f\",\n    maroon: \"800000\",\n    mediumaquamarine: \"66cdaa\",\n    mediumblue: \"0000cd\",\n    mediumorchid: \"ba55d3\",\n    mediumpurple: \"9370db\",\n    mediumseagreen: \"3cb371\",\n    mediumslateblue: \"7b68ee\",\n    mediumspringgreen: \"00fa9a\",\n    mediumturquoise: \"48d1cc\",\n    mediumvioletred: \"c71585\",\n    midnightblue: \"191970\",\n    mintcream: \"f5fffa\",\n    mistyrose: \"ffe4e1\",\n    moccasin: \"ffe4b5\",\n    navajowhite: \"ffdead\",\n    navy: \"000080\",\n    oldlace: \"fdf5e6\",\n    olive: \"808000\",\n    olivedrab: \"6b8e23\",\n    orange: \"ffa500\",\n    orangered: \"ff4500\",\n    orchid: \"da70d6\",\n    palegoldenrod: \"eee8aa\",\n    palegreen: \"98fb98\",\n    paleturquoise: \"afeeee\",\n    palevioletred: \"db7093\",\n    papayawhip: \"ffefd5\",\n    peachpuff: \"ffdab9\",\n    peru: \"cd853f\",\n    pink: \"ffc0cb\",\n    plum: \"dda0dd\",\n    powderblue: \"b0e0e6\",\n    purple: \"800080\",\n    rebeccapurple: \"663399\",\n    red: \"f00\",\n    rosybrown: \"bc8f8f\",\n    royalblue: \"4169e1\",\n    saddlebrown: \"8b4513\",\n    salmon: \"fa8072\",\n    sandybrown: \"f4a460\",\n    seagreen: \"2e8b57\",\n    seashell: \"fff5ee\",\n    sienna: \"a0522d\",\n    silver: \"c0c0c0\",\n    skyblue: \"87ceeb\",\n    slateblue: \"6a5acd\",\n    slategray: \"708090\",\n    slategrey: \"708090\",\n    snow: \"fffafa\",\n    springgreen: \"00ff7f\",\n    steelblue: \"4682b4\",\n    tan: \"d2b48c\",\n    teal: \"008080\",\n    thistle: \"d8bfd8\",\n    tomato: \"ff6347\",\n    turquoise: \"40e0d0\",\n    violet: \"ee82ee\",\n    wheat: \"f5deb3\",\n    white: \"fff\",\n    whitesmoke: \"f5f5f5\",\n    yellow: \"ff0\",\n    yellowgreen: \"9acd32\"\n  };\n\n  // Make it easy to access colors via `hexNames[hex]`\n  var hexNames = tinycolor.hexNames = flip(names);\n\n  // Utilities\n  // ---------\n\n  // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\n  function flip(o) {\n    var flipped = {};\n    for (var i in o) {\n      if (o.hasOwnProperty(i)) {\n        flipped[o[i]] = i;\n      }\n    }\n    return flipped;\n  }\n\n  // Return a valid alpha value [0,1] with all invalid values being set to 1\n  function boundAlpha(a) {\n    a = parseFloat(a);\n    if (isNaN(a) || a < 0 || a > 1) {\n      a = 1;\n    }\n    return a;\n  }\n\n  // Take input from [0, n] and return it as [0, 1]\n  function bound01(n, max) {\n    if (isOnePointZero(n)) {\n      n = \"100%\";\n    }\n    var processPercent = isPercentage(n);\n    n = mathMin(max, mathMax(0, parseFloat(n)));\n\n    // Automatically convert percentage into number\n    if (processPercent) {\n      n = parseInt(n * max, 10) / 100;\n    }\n\n    // Handle floating point rounding errors\n    if (Math.abs(n - max) < 0.000001) {\n      return 1;\n    }\n\n    // Convert into [0, 1] range if it isn't already\n    return n % max / parseFloat(max);\n  }\n\n  // Force a number between 0 and 1\n  function clamp01(val) {\n    return mathMin(1, mathMax(0, val));\n  }\n\n  // Parse a base-16 hex value into a base-10 integer\n  function parseIntFromHex(val) {\n    return parseInt(val, 16);\n  }\n\n  // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n  // <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\n  function isOnePointZero(n) {\n    return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n  }\n\n  // Check to see if string passed in is a percentage\n  function isPercentage(n) {\n    return typeof n === \"string\" && n.indexOf('%') != -1;\n  }\n\n  // Force a hex value to have 2 characters\n  function pad2(c) {\n    return c.length == 1 ? '0' + c : '' + c;\n  }\n\n  // Replace a decimal with it's percentage value\n  function convertToPercentage(n) {\n    if (n <= 1) {\n      n = n * 100 + \"%\";\n    }\n    return n;\n  }\n\n  // Converts a decimal to a hex value\n  function convertDecimalToHex(d) {\n    return Math.round(parseFloat(d) * 255).toString(16);\n  }\n  // Converts a hex value to a decimal\n  function convertHexToDecimal(h) {\n    return parseIntFromHex(h) / 255;\n  }\n  var matchers = function () {\n    // <http://www.w3.org/TR/css3-values/#integers>\n    var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n    // <http://www.w3.org/TR/css3-values/#number-value>\n    var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n    // Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\n    var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n    // Actual matching.\n    // Parentheses and commas are optional, but not required.\n    // Whitespace can take the place of commas or opening paren\n    var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n    var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n    return {\n      CSS_UNIT: new RegExp(CSS_UNIT),\n      rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n      rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n      hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n      hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n      hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n      hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n      hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n      hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n      hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n      hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n    };\n  }();\n\n  // `isValidCSSUnit`\n  // Take in a single string / number and check to see if it looks like a CSS unit\n  // (see `matchers` above for definition).\n  function isValidCSSUnit(color) {\n    return !!matchers.CSS_UNIT.exec(color);\n  }\n\n  // `stringInputToObject`\n  // Permissive string parsing.  Take in a number of formats, and output an object\n  // based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n  function stringInputToObject(color) {\n    color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase();\n    var named = false;\n    if (names[color]) {\n      color = names[color];\n      named = true;\n    } else if (color == 'transparent') {\n      return {\n        r: 0,\n        g: 0,\n        b: 0,\n        a: 0,\n        format: \"name\"\n      };\n    }\n\n    // Try to match string input using regular expressions.\n    // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n    // Just return an object and let the conversion functions handle that.\n    // This way the result will be the same whether the tinycolor is initialized with string or object.\n    var match;\n    if (match = matchers.rgb.exec(color)) {\n      return {\n        r: match[1],\n        g: match[2],\n        b: match[3]\n      };\n    }\n    if (match = matchers.rgba.exec(color)) {\n      return {\n        r: match[1],\n        g: match[2],\n        b: match[3],\n        a: match[4]\n      };\n    }\n    if (match = matchers.hsl.exec(color)) {\n      return {\n        h: match[1],\n        s: match[2],\n        l: match[3]\n      };\n    }\n    if (match = matchers.hsla.exec(color)) {\n      return {\n        h: match[1],\n        s: match[2],\n        l: match[3],\n        a: match[4]\n      };\n    }\n    if (match = matchers.hsv.exec(color)) {\n      return {\n        h: match[1],\n        s: match[2],\n        v: match[3]\n      };\n    }\n    if (match = matchers.hsva.exec(color)) {\n      return {\n        h: match[1],\n        s: match[2],\n        v: match[3],\n        a: match[4]\n      };\n    }\n    if (match = matchers.hex8.exec(color)) {\n      return {\n        r: parseIntFromHex(match[1]),\n        g: parseIntFromHex(match[2]),\n        b: parseIntFromHex(match[3]),\n        a: convertHexToDecimal(match[4]),\n        format: named ? \"name\" : \"hex8\"\n      };\n    }\n    if (match = matchers.hex6.exec(color)) {\n      return {\n        r: parseIntFromHex(match[1]),\n        g: parseIntFromHex(match[2]),\n        b: parseIntFromHex(match[3]),\n        format: named ? \"name\" : \"hex\"\n      };\n    }\n    if (match = matchers.hex4.exec(color)) {\n      return {\n        r: parseIntFromHex(match[1] + '' + match[1]),\n        g: parseIntFromHex(match[2] + '' + match[2]),\n        b: parseIntFromHex(match[3] + '' + match[3]),\n        a: convertHexToDecimal(match[4] + '' + match[4]),\n        format: named ? \"name\" : \"hex8\"\n      };\n    }\n    if (match = matchers.hex3.exec(color)) {\n      return {\n        r: parseIntFromHex(match[1] + '' + match[1]),\n        g: parseIntFromHex(match[2] + '' + match[2]),\n        b: parseIntFromHex(match[3] + '' + match[3]),\n        format: named ? \"name\" : \"hex\"\n      };\n    }\n    return false;\n  }\n  function validateWCAG2Parms(parms) {\n    // return valid WCAG2 parms for isReadable.\n    // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n    var level, size;\n    parms = parms || {\n      \"level\": \"AA\",\n      \"size\": \"small\"\n    };\n    level = (parms.level || \"AA\").toUpperCase();\n    size = (parms.size || \"small\").toLowerCase();\n    if (level !== \"AA\" && level !== \"AAA\") {\n      level = \"AA\";\n    }\n    if (size !== \"small\" && size !== \"large\") {\n      size = \"small\";\n    }\n    return {\n      \"level\": level,\n      \"size\": size\n    };\n  }\n\n  // Node: Export function\n  if (typeof module !== \"undefined\" && module.exports) {\n    module.exports = tinycolor;\n  }\n  // AMD/requirejs: Define the module\n  else if (typeof define === 'function' && define.amd) {\n    define(function () {\n      return tinycolor;\n    });\n  }\n  // Browser: Expose to window\n  else {\n    window.tinycolor = tinycolor;\n  }\n})(Math);","map":{"version":3,"names":["Math","trimLeft","trimRight","tinyCounter","mathRound","round","mathMin","min","mathMax","max","mathRandom","random","tinycolor","color","opts","rgb","inputToRGB","_originalInput","_r","r","_g","g","_b","b","_a","a","_roundA","_format","format","_gradientType","gradientType","_ok","ok","_tc_id","prototype","isDark","getBrightness","isLight","isValid","getOriginalInput","getFormat","getAlpha","toRgb","getLuminance","RsRGB","GsRGB","BsRGB","R","G","B","pow","setAlpha","value","boundAlpha","toHsv","hsv","rgbToHsv","h","s","v","toHsvString","toHsl","hsl","rgbToHsl","l","toHslString","toHex","allow3Char","rgbToHex","toHexString","toHex8","allow4Char","rgbaToHex","toHex8String","toRgbString","toPercentageRgb","bound01","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","rgbaToArgbHex","secondHex8String","toString","formatSet","formattedString","hasAlpha","needsAlphaFormat","clone","_applyModification","fn","args","apply","concat","slice","call","lighten","arguments","brighten","darken","desaturate","saturate","greyscale","spin","_applyCombination","analogous","complement","monochromatic","splitcomplement","triad","tetrad","fromRatio","newColor","i","hasOwnProperty","convertToPercentage","stringInputToObject","isValidCSSUnit","rgbToRgb","String","substr","hsvToRgb","hslToRgb","d","hue2rgb","p","q","t","floor","f","mod","hex","pad2","charAt","join","convertDecimalToHex","equals","color1","color2","amount","clamp01","hue","results","slices","part","ret","push","modification","mix","rgb1","rgb2","rgba","readability","c1","c2","isReadable","wcag2","wcag2Parms","out","validateWCAG2Parms","level","size","mostReadable","baseColor","colorList","bestColor","bestScore","includeFallbackColors","length","names","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","flip","o","flipped","parseFloat","isNaN","n","isOnePointZero","processPercent","isPercentage","parseInt","abs","val","parseIntFromHex","indexOf","c","convertHexToDecimal","matchers","CSS_INTEGER","CSS_NUMBER","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","RegExp","hsla","hsva","hex3","hex6","hex4","hex8","exec","replace","toLowerCase","named","match","parms","toUpperCase","module","exports","define","amd","window"],"sources":["/Users/poppie/Desktop/development/messenger/app/frontend/node_modules/tinycolor2/tinycolor.js"],"sourcesContent":["// TinyColor v1.4.2\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n    trimRight = /\\s+$/,\n    tinyCounter = 0,\n    mathRound = Math.round,\n    mathMin = Math.min,\n    mathMax = Math.max,\n    mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n    color = (color) ? color : '';\n    opts = opts || { };\n\n    // If input is already a tinycolor, return itself\n    if (color instanceof tinycolor) {\n       return color;\n    }\n    // If we are called as a function, call using new instead\n    if (!(this instanceof tinycolor)) {\n        return new tinycolor(color, opts);\n    }\n\n    var rgb = inputToRGB(color);\n    this._originalInput = color,\n    this._r = rgb.r,\n    this._g = rgb.g,\n    this._b = rgb.b,\n    this._a = rgb.a,\n    this._roundA = mathRound(100*this._a) / 100,\n    this._format = opts.format || rgb.format;\n    this._gradientType = opts.gradientType;\n\n    // Don't let the range of [0,255] come back in [0,1].\n    // Potentially lose a little bit of precision here, but will fix issues where\n    // .5 gets interpreted as half of the total, instead of half of 1\n    // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n    if (this._r < 1) { this._r = mathRound(this._r); }\n    if (this._g < 1) { this._g = mathRound(this._g); }\n    if (this._b < 1) { this._b = mathRound(this._b); }\n\n    this._ok = rgb.ok;\n    this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n    isDark: function() {\n        return this.getBrightness() < 128;\n    },\n    isLight: function() {\n        return !this.isDark();\n    },\n    isValid: function() {\n        return this._ok;\n    },\n    getOriginalInput: function() {\n      return this._originalInput;\n    },\n    getFormat: function() {\n        return this._format;\n    },\n    getAlpha: function() {\n        return this._a;\n    },\n    getBrightness: function() {\n        //http://www.w3.org/TR/AERT#color-contrast\n        var rgb = this.toRgb();\n        return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n    },\n    getLuminance: function() {\n        //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n        var rgb = this.toRgb();\n        var RsRGB, GsRGB, BsRGB, R, G, B;\n        RsRGB = rgb.r/255;\n        GsRGB = rgb.g/255;\n        BsRGB = rgb.b/255;\n\n        if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n        if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n        if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n        return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n    },\n    setAlpha: function(value) {\n        this._a = boundAlpha(value);\n        this._roundA = mathRound(100*this._a) / 100;\n        return this;\n    },\n    toHsv: function() {\n        var hsv = rgbToHsv(this._r, this._g, this._b);\n        return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n    },\n    toHsvString: function() {\n        var hsv = rgbToHsv(this._r, this._g, this._b);\n        var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n        return (this._a == 1) ?\n          \"hsv(\"  + h + \", \" + s + \"%, \" + v + \"%)\" :\n          \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n    },\n    toHsl: function() {\n        var hsl = rgbToHsl(this._r, this._g, this._b);\n        return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n    },\n    toHslString: function() {\n        var hsl = rgbToHsl(this._r, this._g, this._b);\n        var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n        return (this._a == 1) ?\n          \"hsl(\"  + h + \", \" + s + \"%, \" + l + \"%)\" :\n          \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n    },\n    toHex: function(allow3Char) {\n        return rgbToHex(this._r, this._g, this._b, allow3Char);\n    },\n    toHexString: function(allow3Char) {\n        return '#' + this.toHex(allow3Char);\n    },\n    toHex8: function(allow4Char) {\n        return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n    },\n    toHex8String: function(allow4Char) {\n        return '#' + this.toHex8(allow4Char);\n    },\n    toRgb: function() {\n        return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n    },\n    toRgbString: function() {\n        return (this._a == 1) ?\n          \"rgb(\"  + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n          \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n    },\n    toPercentageRgb: function() {\n        return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n    },\n    toPercentageRgbString: function() {\n        return (this._a == 1) ?\n          \"rgb(\"  + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n          \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n    },\n    toName: function() {\n        if (this._a === 0) {\n            return \"transparent\";\n        }\n\n        if (this._a < 1) {\n            return false;\n        }\n\n        return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n    },\n    toFilter: function(secondColor) {\n        var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n        var secondHex8String = hex8String;\n        var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n        if (secondColor) {\n            var s = tinycolor(secondColor);\n            secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n        }\n\n        return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n    },\n    toString: function(format) {\n        var formatSet = !!format;\n        format = format || this._format;\n\n        var formattedString = false;\n        var hasAlpha = this._a < 1 && this._a >= 0;\n        var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n        if (needsAlphaFormat) {\n            // Special case for \"transparent\", all other non-alpha formats\n            // will return rgba when there is transparency.\n            if (format === \"name\" && this._a === 0) {\n                return this.toName();\n            }\n            return this.toRgbString();\n        }\n        if (format === \"rgb\") {\n            formattedString = this.toRgbString();\n        }\n        if (format === \"prgb\") {\n            formattedString = this.toPercentageRgbString();\n        }\n        if (format === \"hex\" || format === \"hex6\") {\n            formattedString = this.toHexString();\n        }\n        if (format === \"hex3\") {\n            formattedString = this.toHexString(true);\n        }\n        if (format === \"hex4\") {\n            formattedString = this.toHex8String(true);\n        }\n        if (format === \"hex8\") {\n            formattedString = this.toHex8String();\n        }\n        if (format === \"name\") {\n            formattedString = this.toName();\n        }\n        if (format === \"hsl\") {\n            formattedString = this.toHslString();\n        }\n        if (format === \"hsv\") {\n            formattedString = this.toHsvString();\n        }\n\n        return formattedString || this.toHexString();\n    },\n    clone: function() {\n        return tinycolor(this.toString());\n    },\n\n    _applyModification: function(fn, args) {\n        var color = fn.apply(null, [this].concat([].slice.call(args)));\n        this._r = color._r;\n        this._g = color._g;\n        this._b = color._b;\n        this.setAlpha(color._a);\n        return this;\n    },\n    lighten: function() {\n        return this._applyModification(lighten, arguments);\n    },\n    brighten: function() {\n        return this._applyModification(brighten, arguments);\n    },\n    darken: function() {\n        return this._applyModification(darken, arguments);\n    },\n    desaturate: function() {\n        return this._applyModification(desaturate, arguments);\n    },\n    saturate: function() {\n        return this._applyModification(saturate, arguments);\n    },\n    greyscale: function() {\n        return this._applyModification(greyscale, arguments);\n    },\n    spin: function() {\n        return this._applyModification(spin, arguments);\n    },\n\n    _applyCombination: function(fn, args) {\n        return fn.apply(null, [this].concat([].slice.call(args)));\n    },\n    analogous: function() {\n        return this._applyCombination(analogous, arguments);\n    },\n    complement: function() {\n        return this._applyCombination(complement, arguments);\n    },\n    monochromatic: function() {\n        return this._applyCombination(monochromatic, arguments);\n    },\n    splitcomplement: function() {\n        return this._applyCombination(splitcomplement, arguments);\n    },\n    triad: function() {\n        return this._applyCombination(triad, arguments);\n    },\n    tetrad: function() {\n        return this._applyCombination(tetrad, arguments);\n    }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n    if (typeof color == \"object\") {\n        var newColor = {};\n        for (var i in color) {\n            if (color.hasOwnProperty(i)) {\n                if (i === \"a\") {\n                    newColor[i] = color[i];\n                }\n                else {\n                    newColor[i] = convertToPercentage(color[i]);\n                }\n            }\n        }\n        color = newColor;\n    }\n\n    return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n//     \"red\"\n//     \"#f00\" or \"f00\"\n//     \"#ff0000\" or \"ff0000\"\n//     \"#ff000000\" or \"ff000000\"\n//     \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n//     \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n//     \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n//     \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n//     \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n//     \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n//     \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n    var rgb = { r: 0, g: 0, b: 0 };\n    var a = 1;\n    var s = null;\n    var v = null;\n    var l = null;\n    var ok = false;\n    var format = false;\n\n    if (typeof color == \"string\") {\n        color = stringInputToObject(color);\n    }\n\n    if (typeof color == \"object\") {\n        if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n            rgb = rgbToRgb(color.r, color.g, color.b);\n            ok = true;\n            format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n            s = convertToPercentage(color.s);\n            v = convertToPercentage(color.v);\n            rgb = hsvToRgb(color.h, s, v);\n            ok = true;\n            format = \"hsv\";\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n            s = convertToPercentage(color.s);\n            l = convertToPercentage(color.l);\n            rgb = hslToRgb(color.h, s, l);\n            ok = true;\n            format = \"hsl\";\n        }\n\n        if (color.hasOwnProperty(\"a\")) {\n            a = color.a;\n        }\n    }\n\n    a = boundAlpha(a);\n\n    return {\n        ok: ok,\n        format: color.format || format,\n        r: mathMin(255, mathMax(rgb.r, 0)),\n        g: mathMin(255, mathMax(rgb.g, 0)),\n        b: mathMin(255, mathMax(rgb.b, 0)),\n        a: a\n    };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n    return {\n        r: bound01(r, 255) * 255,\n        g: bound01(g, 255) * 255,\n        b: bound01(b, 255) * 255\n    };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    var max = mathMax(r, g, b), min = mathMin(r, g, b);\n    var h, s, l = (max + min) / 2;\n\n    if(max == min) {\n        h = s = 0; // achromatic\n    }\n    else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n        switch(max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n        }\n\n        h /= 6;\n    }\n\n    return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n    var r, g, b;\n\n    h = bound01(h, 360);\n    s = bound01(s, 100);\n    l = bound01(l, 100);\n\n    function hue2rgb(p, q, t) {\n        if(t < 0) t += 1;\n        if(t > 1) t -= 1;\n        if(t < 1/6) return p + (q - p) * 6 * t;\n        if(t < 1/2) return q;\n        if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n        return p;\n    }\n\n    if(s === 0) {\n        r = g = b = l; // achromatic\n    }\n    else {\n        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        var p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1/3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - 1/3);\n    }\n\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    var max = mathMax(r, g, b), min = mathMin(r, g, b);\n    var h, s, v = max;\n\n    var d = max - min;\n    s = max === 0 ? 0 : d / max;\n\n    if(max == min) {\n        h = 0; // achromatic\n    }\n    else {\n        switch(max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n        }\n        h /= 6;\n    }\n    return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n    h = bound01(h, 360) * 6;\n    s = bound01(s, 100);\n    v = bound01(v, 100);\n\n    var i = Math.floor(h),\n        f = h - i,\n        p = v * (1 - s),\n        q = v * (1 - f * s),\n        t = v * (1 - (1 - f) * s),\n        mod = i % 6,\n        r = [v, q, p, p, t, v][mod],\n        g = [t, v, v, q, p, p][mod],\n        b = [p, p, t, v, v, q][mod];\n\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n    var hex = [\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16))\n    ];\n\n    // Return a 3 character hex if possible\n    if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n    }\n\n    return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n    var hex = [\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16)),\n        pad2(convertDecimalToHex(a))\n    ];\n\n    // Return a 4 character hex if possible\n    if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n    }\n\n    return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n    var hex = [\n        pad2(convertDecimalToHex(a)),\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16))\n    ];\n\n    return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n    if (!color1 || !color2) { return false; }\n    return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n    return tinycolor.fromRatio({\n        r: mathRandom(),\n        g: mathRandom(),\n        b: mathRandom()\n    });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction desaturate(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.s -= amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.s += amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n    return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.l += amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var rgb = tinycolor(color).toRgb();\n    rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n    rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n    rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n    return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.l -= amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n    var hsl = tinycolor(color).toHsl();\n    var hue = (hsl.h + amount) % 360;\n    hsl.h = hue < 0 ? 360 + hue : hue;\n    return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction complement(color) {\n    var hsl = tinycolor(color).toHsl();\n    hsl.h = (hsl.h + 180) % 360;\n    return tinycolor(hsl);\n}\n\nfunction triad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n    ];\n}\n\nfunction tetrad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n    ];\n}\n\nfunction splitcomplement(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n        tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n    ];\n}\n\nfunction analogous(color, results, slices) {\n    results = results || 6;\n    slices = slices || 30;\n\n    var hsl = tinycolor(color).toHsl();\n    var part = 360 / slices;\n    var ret = [tinycolor(color)];\n\n    for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n        hsl.h = (hsl.h + part) % 360;\n        ret.push(tinycolor(hsl));\n    }\n    return ret;\n}\n\nfunction monochromatic(color, results) {\n    results = results || 6;\n    var hsv = tinycolor(color).toHsv();\n    var h = hsv.h, s = hsv.s, v = hsv.v;\n    var ret = [];\n    var modification = 1 / results;\n\n    while (results--) {\n        ret.push(tinycolor({ h: h, s: s, v: v}));\n        v = (v + modification) % 1;\n    }\n\n    return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n    amount = (amount === 0) ? 0 : (amount || 50);\n\n    var rgb1 = tinycolor(color1).toRgb();\n    var rgb2 = tinycolor(color2).toRgb();\n\n    var p = amount / 100;\n\n    var rgba = {\n        r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n        g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n        b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n        a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n    };\n\n    return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function(color1, color2) {\n    var c1 = tinycolor(color1);\n    var c2 = tinycolor(color2);\n    return (Math.max(c1.getLuminance(),c2.getLuminance())+0.05) / (Math.min(c1.getLuminance(),c2.getLuminance())+0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n//      the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n//      the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n//    tinycolor.isReadable(\"#000\", \"#111\") => false\n//    tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n    var readability = tinycolor.readability(color1, color2);\n    var wcag2Parms, out;\n\n    out = false;\n\n    wcag2Parms = validateWCAG2Parms(wcag2);\n    switch (wcag2Parms.level + wcag2Parms.size) {\n        case \"AAsmall\":\n        case \"AAAlarge\":\n            out = readability >= 4.5;\n            break;\n        case \"AAlarge\":\n            out = readability >= 3;\n            break;\n        case \"AAAsmall\":\n            out = readability >= 7;\n            break;\n    }\n    return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString();  // \"#ffffff\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n    var bestColor = null;\n    var bestScore = 0;\n    var readability;\n    var includeFallbackColors, level, size ;\n    args = args || {};\n    includeFallbackColors = args.includeFallbackColors ;\n    level = args.level;\n    size = args.size;\n\n    for (var i= 0; i < colorList.length ; i++) {\n        readability = tinycolor.readability(baseColor, colorList[i]);\n        if (readability > bestScore) {\n            bestScore = readability;\n            bestColor = tinycolor(colorList[i]);\n        }\n    }\n\n    if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n        return bestColor;\n    }\n    else {\n        args.includeFallbackColors=false;\n        return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n    }\n};\n\n\n// Big List of Colors\n// ------------------\n// <http://www.w3.org/TR/css3-color/#svg-color>\nvar names = tinycolor.names = {\n    aliceblue: \"f0f8ff\",\n    antiquewhite: \"faebd7\",\n    aqua: \"0ff\",\n    aquamarine: \"7fffd4\",\n    azure: \"f0ffff\",\n    beige: \"f5f5dc\",\n    bisque: \"ffe4c4\",\n    black: \"000\",\n    blanchedalmond: \"ffebcd\",\n    blue: \"00f\",\n    blueviolet: \"8a2be2\",\n    brown: \"a52a2a\",\n    burlywood: \"deb887\",\n    burntsienna: \"ea7e5d\",\n    cadetblue: \"5f9ea0\",\n    chartreuse: \"7fff00\",\n    chocolate: \"d2691e\",\n    coral: \"ff7f50\",\n    cornflowerblue: \"6495ed\",\n    cornsilk: \"fff8dc\",\n    crimson: \"dc143c\",\n    cyan: \"0ff\",\n    darkblue: \"00008b\",\n    darkcyan: \"008b8b\",\n    darkgoldenrod: \"b8860b\",\n    darkgray: \"a9a9a9\",\n    darkgreen: \"006400\",\n    darkgrey: \"a9a9a9\",\n    darkkhaki: \"bdb76b\",\n    darkmagenta: \"8b008b\",\n    darkolivegreen: \"556b2f\",\n    darkorange: \"ff8c00\",\n    darkorchid: \"9932cc\",\n    darkred: \"8b0000\",\n    darksalmon: \"e9967a\",\n    darkseagreen: \"8fbc8f\",\n    darkslateblue: \"483d8b\",\n    darkslategray: \"2f4f4f\",\n    darkslategrey: \"2f4f4f\",\n    darkturquoise: \"00ced1\",\n    darkviolet: \"9400d3\",\n    deeppink: \"ff1493\",\n    deepskyblue: \"00bfff\",\n    dimgray: \"696969\",\n    dimgrey: \"696969\",\n    dodgerblue: \"1e90ff\",\n    firebrick: \"b22222\",\n    floralwhite: \"fffaf0\",\n    forestgreen: \"228b22\",\n    fuchsia: \"f0f\",\n    gainsboro: \"dcdcdc\",\n    ghostwhite: \"f8f8ff\",\n    gold: \"ffd700\",\n    goldenrod: \"daa520\",\n    gray: \"808080\",\n    green: \"008000\",\n    greenyellow: \"adff2f\",\n    grey: \"808080\",\n    honeydew: \"f0fff0\",\n    hotpink: \"ff69b4\",\n    indianred: \"cd5c5c\",\n    indigo: \"4b0082\",\n    ivory: \"fffff0\",\n    khaki: \"f0e68c\",\n    lavender: \"e6e6fa\",\n    lavenderblush: \"fff0f5\",\n    lawngreen: \"7cfc00\",\n    lemonchiffon: \"fffacd\",\n    lightblue: \"add8e6\",\n    lightcoral: \"f08080\",\n    lightcyan: \"e0ffff\",\n    lightgoldenrodyellow: \"fafad2\",\n    lightgray: \"d3d3d3\",\n    lightgreen: \"90ee90\",\n    lightgrey: \"d3d3d3\",\n    lightpink: \"ffb6c1\",\n    lightsalmon: \"ffa07a\",\n    lightseagreen: \"20b2aa\",\n    lightskyblue: \"87cefa\",\n    lightslategray: \"789\",\n    lightslategrey: \"789\",\n    lightsteelblue: \"b0c4de\",\n    lightyellow: \"ffffe0\",\n    lime: \"0f0\",\n    limegreen: \"32cd32\",\n    linen: \"faf0e6\",\n    magenta: \"f0f\",\n    maroon: \"800000\",\n    mediumaquamarine: \"66cdaa\",\n    mediumblue: \"0000cd\",\n    mediumorchid: \"ba55d3\",\n    mediumpurple: \"9370db\",\n    mediumseagreen: \"3cb371\",\n    mediumslateblue: \"7b68ee\",\n    mediumspringgreen: \"00fa9a\",\n    mediumturquoise: \"48d1cc\",\n    mediumvioletred: \"c71585\",\n    midnightblue: \"191970\",\n    mintcream: \"f5fffa\",\n    mistyrose: \"ffe4e1\",\n    moccasin: \"ffe4b5\",\n    navajowhite: \"ffdead\",\n    navy: \"000080\",\n    oldlace: \"fdf5e6\",\n    olive: \"808000\",\n    olivedrab: \"6b8e23\",\n    orange: \"ffa500\",\n    orangered: \"ff4500\",\n    orchid: \"da70d6\",\n    palegoldenrod: \"eee8aa\",\n    palegreen: \"98fb98\",\n    paleturquoise: \"afeeee\",\n    palevioletred: \"db7093\",\n    papayawhip: \"ffefd5\",\n    peachpuff: \"ffdab9\",\n    peru: \"cd853f\",\n    pink: \"ffc0cb\",\n    plum: \"dda0dd\",\n    powderblue: \"b0e0e6\",\n    purple: \"800080\",\n    rebeccapurple: \"663399\",\n    red: \"f00\",\n    rosybrown: \"bc8f8f\",\n    royalblue: \"4169e1\",\n    saddlebrown: \"8b4513\",\n    salmon: \"fa8072\",\n    sandybrown: \"f4a460\",\n    seagreen: \"2e8b57\",\n    seashell: \"fff5ee\",\n    sienna: \"a0522d\",\n    silver: \"c0c0c0\",\n    skyblue: \"87ceeb\",\n    slateblue: \"6a5acd\",\n    slategray: \"708090\",\n    slategrey: \"708090\",\n    snow: \"fffafa\",\n    springgreen: \"00ff7f\",\n    steelblue: \"4682b4\",\n    tan: \"d2b48c\",\n    teal: \"008080\",\n    thistle: \"d8bfd8\",\n    tomato: \"ff6347\",\n    turquoise: \"40e0d0\",\n    violet: \"ee82ee\",\n    wheat: \"f5deb3\",\n    white: \"fff\",\n    whitesmoke: \"f5f5f5\",\n    yellow: \"ff0\",\n    yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n    var flipped = { };\n    for (var i in o) {\n        if (o.hasOwnProperty(i)) {\n            flipped[o[i]] = i;\n        }\n    }\n    return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n    a = parseFloat(a);\n\n    if (isNaN(a) || a < 0 || a > 1) {\n        a = 1;\n    }\n\n    return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n    if (isOnePointZero(n)) { n = \"100%\"; }\n\n    var processPercent = isPercentage(n);\n    n = mathMin(max, mathMax(0, parseFloat(n)));\n\n    // Automatically convert percentage into number\n    if (processPercent) {\n        n = parseInt(n * max, 10) / 100;\n    }\n\n    // Handle floating point rounding errors\n    if ((Math.abs(n - max) < 0.000001)) {\n        return 1;\n    }\n\n    // Convert into [0, 1] range if it isn't already\n    return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n    return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n    return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n    return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n    return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n    return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n    if (n <= 1) {\n        n = (n * 100) + \"%\";\n    }\n\n    return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n    return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n    return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n    // <http://www.w3.org/TR/css3-values/#integers>\n    var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n    // <http://www.w3.org/TR/css3-values/#number-value>\n    var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n    // Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\n    var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n    // Actual matching.\n    // Parentheses and commas are optional, but not required.\n    // Whitespace can take the place of commas or opening paren\n    var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n    var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n    return {\n        CSS_UNIT: new RegExp(CSS_UNIT),\n        rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n        rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n        hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n        hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n        hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n        hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n        hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n        hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n        hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n        hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n    };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n    return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing.  Take in a number of formats, and output an object\n// based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n    color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n    var named = false;\n    if (names[color]) {\n        color = names[color];\n        named = true;\n    }\n    else if (color == 'transparent') {\n        return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n    }\n\n    // Try to match string input using regular expressions.\n    // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n    // Just return an object and let the conversion functions handle that.\n    // This way the result will be the same whether the tinycolor is initialized with string or object.\n    var match;\n    if ((match = matchers.rgb.exec(color))) {\n        return { r: match[1], g: match[2], b: match[3] };\n    }\n    if ((match = matchers.rgba.exec(color))) {\n        return { r: match[1], g: match[2], b: match[3], a: match[4] };\n    }\n    if ((match = matchers.hsl.exec(color))) {\n        return { h: match[1], s: match[2], l: match[3] };\n    }\n    if ((match = matchers.hsla.exec(color))) {\n        return { h: match[1], s: match[2], l: match[3], a: match[4] };\n    }\n    if ((match = matchers.hsv.exec(color))) {\n        return { h: match[1], s: match[2], v: match[3] };\n    }\n    if ((match = matchers.hsva.exec(color))) {\n        return { h: match[1], s: match[2], v: match[3], a: match[4] };\n    }\n    if ((match = matchers.hex8.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            a: convertHexToDecimal(match[4]),\n            format: named ? \"name\" : \"hex8\"\n        };\n    }\n    if ((match = matchers.hex6.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            format: named ? \"name\" : \"hex\"\n        };\n    }\n    if ((match = matchers.hex4.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1] + '' + match[1]),\n            g: parseIntFromHex(match[2] + '' + match[2]),\n            b: parseIntFromHex(match[3] + '' + match[3]),\n            a: convertHexToDecimal(match[4] + '' + match[4]),\n            format: named ? \"name\" : \"hex8\"\n        };\n    }\n    if ((match = matchers.hex3.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1] + '' + match[1]),\n            g: parseIntFromHex(match[2] + '' + match[2]),\n            b: parseIntFromHex(match[3] + '' + match[3]),\n            format: named ? \"name\" : \"hex\"\n        };\n    }\n\n    return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n    // return valid WCAG2 parms for isReadable.\n    // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n    var level, size;\n    parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n    level = (parms.level || \"AA\").toUpperCase();\n    size = (parms.size || \"small\").toLowerCase();\n    if (level !== \"AA\" && level !== \"AAA\") {\n        level = \"AA\";\n    }\n    if (size !== \"small\" && size !== \"large\") {\n        size = \"small\";\n    }\n    return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif (typeof module !== \"undefined\" && module.exports) {\n    module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (typeof define === 'function' && define.amd) {\n    define(function () {return tinycolor;});\n}\n// Browser: Expose to window\nelse {\n    window.tinycolor = tinycolor;\n}\n\n})(Math);\n"],"mappings":"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"},"metadata":{},"sourceType":"script"}